/**
 * 添加经典书籍到书架的工具函数
 */

import { useBookshelfStore } from '../store/bookshelf';
import { BookshelfStoreEntity } from '../core/database/database';
import { nanoid } from 'nanoid';

// 经典书籍数据
const classicBooks = [
  {
    bookname: '红楼梦',
    author: '曹雪芹',
    intro: '中国古典四大名著之首，以贾、史、王、薛四大家族的兴衰为背景，以贾宝玉、林黛玉、薛宝钗的爱情婚姻悲剧为主线，描绘了一些闺阁佳人的人生百态，展现了真正的人性美和悲剧美。',
    coverImageUrl: 'https://img3.doubanio.com/view/subject/l/public/s1070959.jpg',
    chapterCount: 120,
  },
  {
    bookname: '西游记',
    author: '吴承恩',
    intro: '中国古典四大名著之一，讲述了孙悟空、猪八戒、沙僧保护唐僧西天取经的故事。全书分为三部分：前七回写孙悟空出世至大闹天宫；八至十二回写唐僧出世至取经缘起；十三至一百回写西天取经路上的八十一难。',
    coverImageUrl: 'https://img1.doubanio.com/view/subject/l/public/s1001394.jpg',
    chapterCount: 100,
  },
  {
    bookname: '水浒传',
    author: '施耐庵',
    intro: '中国古典四大名著之一，以宋江起义为主线，生动地描写了梁山好汉们从起义到兴盛再到最终失败的全过程，特别是通过写众多草莽英雄不同的人生经历和反抗道路，鲜明地表现了\'官逼民反\'的主题。',
    coverImageUrl: 'https://img3.doubanio.com/view/subject/l/public/s1009790.jpg',
    chapterCount: 120,
  },
  {
    bookname: '三国演义',
    author: '罗贯中',
    intro: '中国古典四大名著之一，描写了从东汉末年到西晋初年之间近百年的历史风云，以描写战争为主，诉说了东汉末年的群雄割据混战和魏、蜀、吴三国之间的政治和军事斗争，最终司马炎一统三国，建立晋朝的故事。',
    coverImageUrl: 'https://img3.doubanio.com/view/subject/l/public/s4224021.jpg',
    chapterCount: 120,
  },
  {
    bookname: '围城',
    author: '钱钟书',
    intro: '现代文学经典，以主人公方鸿渐的生活道路为主线，生动地展现了抗战初期知识分子的群相。小说塑造了抗战开初一类知识分子的典型形象，反映了他们的精神危机。',
    coverImageUrl: 'https://img3.doubanio.com/view/subject/l/public/s1070959.jpg',
    chapterCount: 9,
  },
  {
    bookname: '平凡的世界',
    author: '路遥',
    intro: '茅盾文学奖获奖作品，以中国70年代中期到80年代中期十年间为背景，通过复杂的矛盾纠葛，以孙少安和孙少平两兄弟为中心，刻画了当时社会各阶层众多普通人的形象。',
    coverImageUrl: 'https://img1.doubanio.com/view/subject/l/public/s1144911.jpg',
    chapterCount: 87,
  },
  {
    bookname: '活着',
    author: '余华',
    intro: '当代文学经典，讲述了在大时代背景下，随着内战、三反五反，大跃进，文化大革命等社会变革，徐福贵的人生和家庭不断经受着苦难，到了最后所有亲人都先后离他而去，仅剩下他和一头老牛相依为命。',
    coverImageUrl: 'https://img3.doubanio.com/view/subject/l/public/s4913064.jpg',
    chapterCount: 12,
  },
  {
    bookname: '白鹿原',
    author: '陈忠实',
    intro: '茅盾文学奖获奖作品，以白嘉轩为叙述核心，白鹿原上白鹿两家的恩怨纷争为情节线索，反映了从清朝末年到二十世纪七八十年代长达半个多世纪的历史变化。',
    coverImageUrl: 'https://img3.doubanio.com/view/subject/l/public/s1076932.jpg',
    chapterCount: 30,
  },
];

/**
 * 创建书架实体
 */
function createBookshelfEntity(book: any, index: number): BookshelfStoreEntity {
  const now = Date.now();
  const bookId = nanoid();
  
  // 生成章节列表
  const chapterList = Array.from({ length: book.chapterCount }, (_, i) => ({
    title: `第${i + 1}章`,
    url: `classic://book/${bookId}/chapter/${i}`,
    index: i,
  }));
  
  return {
    id: bookId,
    pid: 'CLASSIC_BOOKS',
    detailPageUrl: `classic://book/${bookId}`,
    bookname: book.bookname,
    author: book.author,
    coverImageUrl: book.coverImageUrl,
    intro: book.intro,
    latestChapterTitle: `第${book.chapterCount}章`,
    chapterList: chapterList,
    searchIndex: `${book.bookname} ${book.author}`,
    readIndex: 0,
    readScrollTop: 0,
    timestamp: now - (index * 1000),
    pluginVersionCode: 1,
    baseUrl: 'classic://books',
  };
}

/**
 * 添加经典书籍到书架
 */
export async function addClassicBooksToBookshelf(): Promise<void> {
  console.log('开始添加经典书籍到书架...');
  
  try {
    let addedCount = 0;
    
    for (let i = 0; i < classicBooks.length; i++) {
      const book = classicBooks[i];
      
      // 检查是否已存在
      const existingBooks = await GLOBAL_DB.store.bookshelfStore.getAll();
      const exists = existingBooks?.some(existing => 
        existing.bookname === book.bookname && existing.author === book.author,
      ) || false;
      
      if (!exists) {
        const bookEntity = createBookshelfEntity(book, i);
        await GLOBAL_DB.store.bookshelfStore.put(bookEntity);
        addedCount++;
        console.log(`✅ 已添加: ${book.bookname} - ${book.author}`);
      } else {
        console.log(`⚠️ 已存在: ${book.bookname} - ${book.author}`);
      }
    }
    
    // 刷新书架store
    const bookshelfStore = useBookshelfStore();
    await bookshelfStore.refresh();
    
    console.log(`\n📚 添加完成！共添加了 ${addedCount} 本经典书籍`);
    
    if (addedCount > 0) {
      // 显示成功消息
      const { useMessage } = await import('../hooks/message');
      const message = useMessage();
      message.success(`成功添加 ${addedCount} 本经典书籍到书架！`);
    }
    
  } catch (error) {
    console.error('添加经典书籍失败:', error);
    const { useMessage } = await import('../hooks/message');
    const message = useMessage();
    message.error('添加经典书籍失败: ' + (error as Error).message);
    throw error;
  }
}

/**
 * 检查是否已有经典书籍
 */
export async function hasClassicBooks(): Promise<boolean> {
  try {
    const books = await GLOBAL_DB.store.bookshelfStore.getAll();
    return books?.some(book => book.pid === 'CLASSIC_BOOKS') || false;
  } catch (error) {
    console.error('检查经典书籍失败:', error);
    return false;
  }
}

/**
 * 获取经典书籍列表
 */
export function getClassicBooksList() {
  return classicBooks;
}